package com.bob.clan.wxconnector.DTO;

import lombok.Data;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

/**
 * 微信服务器转发的用户的消息与事件的对像类。
 * 本类严格按微信接口文档里批导的XML转化而来
 * 哈哈，我知道微信为何要把属性名的首字段都大写，这虽然是违背了Java的命名规范，但只有这样才可以让@XmlElement工作
 */
@Data
@XmlRootElement(name = "xml")
@XmlAccessorType(XmlAccessType.NONE)
public class WxMsgDTO {
    @XmlElement
    private String ToUserName;//开发者微信号
    @XmlElement
    private String FromUserName;//发送方账号（一个OpenID）
    @XmlElement
    private Long CreateTime; //消息创建时间 （整型）
//    private Date createDate;
    @XmlElement
    private String MsgType;//消息类型
    @XmlElement
    private String Content;     //【文本消息】消息内容
    @XmlElement
    private String PicUrl;      //【图片消息】图片链接
    @XmlElement
    private Long MediaId;    //消息媒体id，可以调用获取临时素材接口拉取数据
    @XmlElement
    private String Format;      //【语音消息】语音格式，如amr，speex等
    @XmlElement
    private Long ThumbMediaId; //视频消息缩略图的媒体id，可以调用多媒体文件下载接口拉取数据。
    @XmlElement
    private Double Location_X;  //【地理位置消息】地理位置纬度
    @XmlElement
    private Double Location_Y;  //【地理位置消息】地理位置经度
    @XmlElement
    private Double Scale;       //【地理位置消息】地图缩放大小
    @XmlElement
    private String Label;       //【地理位置消息】地理位置信息
    @XmlElement
    private String Title;       //【链接消息】消息标题
    @XmlElement
    private String Description; //【链接消息】消息描述
    @XmlElement
    private String Url;         //【链接消息】消息链接
    @XmlElement
    private Long MsgId;//消息ID
    @XmlElement
    private Long MsgDataId; //消息的数据ID（消息如果来自文章时才有）
    @XmlElement
    private Long Idx; //多图文时第几篇文章，从1开始（消息如果来自文章时才有）
    @XmlElement
    private Long MediaId16K; //16K采样率语音消息媒体id，可以调用获取临时素材接口拉取数据，返回16K采样率amr/speex语音。
    @XmlElement
    private String Event;//事件种类，有SCAN，subscribe,unsubscribe
    @XmlElement
    private String EventKey; //事件KEY值，即创建二维码时的二维码scene_id
    @XmlElement
    private String Ticket; //二维码的ticket，可用来换取二维码图片
    @XmlElement
    private Double Latitude; //地理位置纬度
    @XmlElement
    private Double Longitude; //地理位置经度
    @XmlElement
    private Double Precision; //地理位置精度
//    @XmlElement
//    public String getToUserName() {
//        return ToUserName;
//    }
//
//    public void setToUserName(String toUserName) {
//        ToUserName = toUserName;
//    }
//    @XmlElement
//    public String getFromUserName() {
//        return FromUserName;
//    }
//
//    public void setFromUserName(String fromUserName) {
//        FromUserName = fromUserName;
//    }
//    @XmlElement
//    public Integer getCreateTime() {
//        return CreateTime;
//    }
//
//    public void setCreateTime(Integer createTime) {
//        CreateTime = createTime;
//    }
//    @XmlElement
//    public String getMsgType() {
//        return MsgType;
//    }
//
//    public void setMsgType(String msgType) {
//        MsgType = msgType;
//    }
//    @XmlElement
//    public String getContent() {
//        return Content;
//    }
//
//    public void setContent(String content) {
//        Content = content;
//    }
//    @XmlElement
//    public String getPicUrl() {
//        return PicUrl;
//    }
//
//    public void setPicUrl(String picUrl) {
//        PicUrl = picUrl;
//    }
//    @XmlElement
//    public Integer getMediaId() {
//        return MediaId;
//    }
//
//    public void setMediaId(Integer mediaId) {
//        MediaId = mediaId;
//    }
//    @XmlElement
//    public String getFormat() {
//        return Format;
//    }
//
//    public void setFormat(String format) {
//        Format = format;
//    }
//    @XmlElement
//    public Integer getThumbMediaId() {
//        return ThumbMediaId;
//    }
//
//    public void setThumbMediaId(Integer thumbMediaId) {
//        ThumbMediaId = thumbMediaId;
//    }
//    @XmlElement
//    public Double getLocation_X() {
//        return Location_X;
//    }
//
//    public void setLocation_X(Double location_X) {
//        Location_X = location_X;
//    }
//    @XmlElement
//    public Double getLocation_Y() {
//        return Location_Y;
//    }
//
//    public void setLocation_Y(Double location_Y) {
//        Location_Y = location_Y;
//    }
//    @XmlElement
//    public Double getScale() {
//        return Scale;
//    }
//
//    public void setScale(Double scale) {
//        Scale = scale;
//    }
//    @XmlElement
//    public String getLabel() {
//        return Label;
//    }
//
//    public void setLabel(String label) {
//        Label = label;
//    }
//    @XmlElement
//    public String getTitle() {
//        return Title;
//    }
//
//    public void setTitle(String title) {
//        Title = title;
//    }
//    @XmlElement
//    public String getDescription() {
//        return Description;
//    }
//
//    public void setDescription(String description) {
//        Description = description;
//    }
//    @XmlElement
//    public String getUrl() {
//        return Url;
//    }
//
//    public void setUrl(String url) {
//        Url = url;
//    }
//    @XmlElement
//    public Integer getMsgId() {
//        return MsgId;
//    }
//
//    public void setMsgId(Integer msgId) {
//        MsgId = msgId;
//    }
//    @XmlElement
//    public Integer getMsgDataId() {
//        return MsgDataId;
//    }
//
//    public void setMsgDataId(Integer msgDataId) {
//        MsgDataId = msgDataId;
//    }
//    @XmlElement
//    public Integer getIdx() {
//        return Idx;
//    }
//
//    public void setIdx(Integer idx) {
//        Idx = idx;
//    }
//    @XmlElement
//    public Integer getMediaId26K() {
//        return MediaId26K;
//    }
//
//    public void setMediaId26K(Integer mediaId26K) {
//        MediaId26K = mediaId26K;
//    }
//    @XmlElement
//    public String getEvent() {
//        return Event;
//    }
//
//    public void setEvent(String event) {
//        Event = event;
//    }
//    @XmlElement
//    public String getEventKey() {
//        return EventKey;
//    }
//
//    public void setEventKey(String eventKey) {
//        EventKey = eventKey;
//    }
//    @XmlElement
//    public String getTicket() {
//        return Ticket;
//    }
//
//    public void setTicket(String ticket) {
//        Ticket = ticket;
//    }
//    @XmlElement
//    public Double getLatitude() {
//        return Latitude;
//    }
//
//    public void setLatitude(Double latitude) {
//        Latitude = latitude;
//    }
//    @XmlElement
//    public Double getLongitude() {
//        return Longitude;
//    }
//
//    public void setLongitude(Double longitude) {
//        Longitude = longitude;
//    }
//    @XmlElement
//    public Double getPrecision() {
//        return Precision;
//    }
//
//    public void setPrecision(Double precision) {
//        Precision = precision;
//    }
}
